Achtung: Es ist absolut notwendig, vor dem Update ein komplettes Backup des Servers zu erstellen. Bei einem Distro-Update können durch vielfältige Ursachen Fehler auftreten, die das System in einem nicht mehr verwendbaren Zustand hinterlassen. Wir übernehmen dafür keine Verantwortung.
1. Prüfung der aktuellen Version:
$ lsb_release -a # returns No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 11 (bullseye) Release: 11 Codename: bullseye
2. Update aller installierten Pakete
Sicherheitshalber sollten alle nicht Standard-Pakete deinstalliert werden. Nach dem Update können diese erneut installiert werden, falls sie von Debian 12 unterstützt werden. Das Ergebnis dieser Prüfung könnte z.B. wie folgt aussehen:
$ sudo apt list '?narrow(?installed, ?not(?origin(Debian)))' containerd.io/bullseye,now 1.6.21-1 amd64 [installed] docker-ce-cli/bullseye,now 5:24.0.2-1~debian.11~bullseye amd64 [installed] docker-ce/bullseye,now 5:24.0.2-1~debian.11~bullseye amd64 [installed] hc-utils/now 0.0.4-1 all [installed,local] rsnapshot/now 1.4.4-1 all [installed,local]
Ebenso können Pakete im "hold"-Status bei dem Update zu Problemen führen. Diese können wir folgt aufgelistet werden:
# show packages in hold status $ sudo apt-mark showhold | more # uninstall packages in hold status $ sudo apt-mark unhold package_name
Weitere Informationen finden sich z.B. hier
Jetzt muss das System auf den aktuellsten Stand gebracht werden:
$ sudo apt update $ sudo apt upgrade $ sudo apt full-upgrade $ sudo apt --purge autoremove # reboot $ sudo systemctl reboot
3. Update der Debian sources
Um den Updateprozess zu starten, müssen die sources-list Dateien angepasst werden. Diese finden sich in /etc/apt/sources.list und /etc/apt/sources.list.d/*.list.
In all diesen Dateien muss "bullseye" mit "bookworm" ersetzt werden. Beispiel
# Vorher deb deb.debian.org/debian bullseye main deb deb.debian.org/debian bullseye-updates main deb deb.debian.org/debian-security/ bullseye-security main # Nachher deb deb.debian.org/debian bookworm main deb deb.debian.org/debian bookworm-updates main deb deb.debian.org/debian-security/ bookworm-security main
Jetzt können die package-lists aktualisiert werden:
$ sudo apt update
4. System Upgrade
$ sudo apt upgrade --without-new-pkgs
Beim Ausführen dieses Upgrades wird bei diversen (Konfigurations-) Dateien gefragt, ob die lokal modifizierte Variante durch eine neue ersetzt werden soll. Das muss im Einzelfall überprüft werden. Wir haben z.B. auf allen Systemen die sshd-Konfiguration angepasst und es wird hier gefragt, ob die lokale Datei /etc/ssh/sshd_config durch eine neue (mit Standard-Settings) ersetzt werden soll.
5. Upgrade Debian 11 auf Debian 12
Jetzt kann der finale Upgrade-Prozess gestartet werden. Auch hier wird bei einzelnen Dateien gefragt, ob die lokale oder neue Version verwendet werden soll.
$ sudo apt full-upgrade # before rebooting, then check, if the sshd config is valid $ sudo sshd -t # now reboot into Debian 12 $ sudo systemctl reboot
6. Prüfung der neuen Systemversion
$ lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 12 (bookworm) Release: 12 Codename: bookworm
7. Fehlerbehebung
Wird nach der Installation 'apt-get update' aufgerufen, kann folgende Meldung erscheinen:
N: Repository 'Debian bookworm' changed its 'non-free component' value from 'non-free' to 'non-free non-free-firmware' N: More information about this can be found online in the Release notes at: www.debian.org/releases/bookworm/amd64/release-notes/ch-information.html
Die Meldung lässt sich wie folgt deaktivieren:
$ su -c 'echo "APT::Get::Update::SourceListWarnings::NonFreeFirmware \"false\";" > /etc/apt/apt.conf.d/no-bookworm-firmware.conf'
8. Sonstiges
Docker
Je nachdem wie Docker bisher installiert war, kann es Sinn machen, Docker für Debian 12 neu zu installieren. Das geht wie folgt (siehe auch https://docs.docker.com/engine/install/debian/):
# Run the following command to uninstall all conflicting packages $ for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done # Update the apt package index and install packages to allow apt to use a repository over HTTPS: $ sudo apt-get update $ sudo apt-get install ca-certificates curl gnupg # Add Docker’s official GPG key: $ sudo install -m 0755 -d /etc/apt/keyrings $ curl -fsSL download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg $ sudo chmod a+r /etc/apt/keyrings/docker.gpg # Use the following command to set up the repository $ echo "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] download.docker.com/linux/debian \ "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # Update the apt package index $ sudo apt-get update # Install Docker Engine, containerd, and Docker Compose (latest versions). $ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin # Verify that the Docker Engine installation is successful by running the hello-world image $ sudo docker run hello-world